//package com.jaeke.aop;
//
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.*;
//import org.springframework.stereotype.Component;
//
//
//// 切面类
//@Component   // 注入到spring容器中
//@Aspect     // 设置该类为一个切面
//public class AopLog {
//
//    // aop  编程中有几个通知， 前置通知 后置通知 运行通知 异常通知 环绕通知
//
//    @Before("execution(* com.jaeke.service.UserService.add(..))")
//    public void before() {
//        System.out.println("前置通知： 在方法之前执行.......");
//    }
//
//    // 后置通知  在方法运行后执行
//    @After("execution(* com.jaeke.service.UserService.add(..))")
//    public void after() {
//        System.out.println("后置通知：  在方法之后执行.......");
//    }
//
//    // 运行通知
//    @AfterReturning("execution(* com.jaeke.service.UserService.add(..))")
//    public void returning() {
//        System.out.println("运行通知");
//    }
//
//    // 异常通知
//    @AfterThrowing("execution(* com.jaeke.service.UserService.add(..))")
//    public void afterThrowing() {
//        System.out.println("异常通知");
//    }
//
//    // 环绕通知 在方法之前和之后处理事情
//    @Around("execution(* com.jaeke.service.UserService.add(..))")
//    public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
//        System.out.println("环绕通知开始");
//        // 在调用方法之前执行
//        proceedingJoinPoint.proceed();  // 代理调用方法  注意点：如果调用方法抛出异常 则不会执行后面代码
//        // 在调用方法之后执行
//        System.out.println("环绕通知结束");
//
//
//    }
//
//
//}
